package cn.org.donald.framework.service;

import cn.org.donald.framework.pojo.dto.ChangePwdDto;
import cn.org.donald.framework.pojo.dto.UserDto;
import cn.org.donald.framework.pojo.vo.HttpResult;
import cn.org.donald.framework.pojo.dto.PageDto;
import cn.org.donald.pojo.entity.system.User;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.HashMap;

/**
 * @author ： Donald
 * @date ： 2020/10/17 15:54
 * @description：
 */
public interface SysUserService {
    /**
     * 注册用户
     * @param user
     * @return
     */
    int insert(User user);

    /**
     * 根据userName查询user信息
     * @param userName
     * @return
     */
    User findByUserName(String userName);

    /**
     * 用户名是否存在
     * @param userName
     * @return
     */
    boolean isExistByUserName(String userName);

    /**
     * 手机号是否存在
     * @param phone
     * @return
     */
    boolean isExistByPhone(String phone);

    /**
     * email是否存在
     * @param email
     * @return
     */
    boolean isExistByEmail(String email);

    IPage<User> findAllPage(PageDto<User> pageDto);

    boolean isAdminUser(Long id);

    int removeById(Long id);

    /**
     * 根据id更新用户信息
     * @param userDto
     * @return
     */
    int edit(UserDto userDto);

    /**
     * 新增管理员
     * @param user
     * @return
     */
    int insertAdminUser(User user);

    /**
     * 根据id获取用户信息
     * @param userId
     * @return
     */
    User findById(Long userId);

    boolean changePwd(ChangePwdDto changePwdDto, Long id);

    /**
     * 根据手机号查找用户
     * @param phone
     * @return
     */
    User findByPhone(String phone);

    HashMap<String, Object> verified(Long userId);

    int editPerson(UserDto userDto);

    HttpResult sendSmsVerify(String phone, Long userId);
}
